package org.truenewx.tnxjee.core.enums.annotation;

import java.lang.annotation.*;

import org.truenewx.tnxjee.core.Strings;

/**
 * 枚举常量场景，标注在枚举常量上，表示可归属于指定枚举子类型
 *
 * @author jianglei
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(EnumConstantScenes.class)
public @interface EnumConstantScene {

    int DEFAULT_ORDINAL = -1;

    /**
     * @return 所属的枚举子类型名称
     */
    String subType();

    /**
     * @return 在指定枚举子类型中的顺序号，大于等于0才有效，小于0时使用枚举常量的定义顺序
     */
    int ordinal() default DEFAULT_ORDINAL;

    /**
     * @return 在当前场景下的显示名称
     */
    String caption() default Strings.EMPTY;

}
